Q:
QTGetEffectsList ä÷êîÇí Ç∂ǃ QuickTime ÉGÉtÉFÉNÉgÇÃÉäÉXÉgÇéÊìæÇµÇƒÇ¢Ç‹Ç∑ÅBǪÇÃå„ÅADZÇÃÉäÉXÉgÇ QTCreateStandardParameterDialog ä÷êîÇ…ìnǵǃÉ_ÉCÉAÉçÉOÇçÏê¨ÇµÅAÉÜÅ[ÉUÇ™ÉäÉXÉgÇ©ÇÁÉGÉtÉFÉNÉgÇëIëÇ≈Ç´ÇÈÇÊǧDžǵǃǢNjÇ∑ÅBǵǩǵÅAéwíËǵÇΩÉGÉtÉFÉNÉgÇæÇØÇ™ÉäÉXÉgÇ…ï\é¶Ç≥ÇÍÇÈÇÊǧDžÅADZÇÃÉäÉXÉgÇéñëOÇ…ï“èWǵÇΩÇ¢ÇΔévǡǃǢNjÇ∑ÅBDZÇÍÇÕâ¬î\Ç≈ǵÇÂǧǩÅH
A: QuickTime 6 Ç≈ÇÕÅAQTGetEffectsListExtended ÇΔǢǧï÷óòÇ»ä÷êîÇégópǵǃÅAÉGÉtÉFÉNÉgÉäÉXÉgÇ…ì¸ÇÍÇÈÉGÉtÉFÉNÉgÇÉtÉBÉãÉ^èàóùÇ≈Ç´Ç‹Ç∑ÅBDZÇÃä÷êîÇÃäÆëSÇ»ÉhÉLÉÖÉÅÉìÉgÇÕÅAÅuWhat's New in QuickTime 6ÅvDždžÇËÇ‹Ç∑ÅBÉAÉbÉvÉãÇ≈ÇÕÅAQuickTime ÇÃè´óàÇÃÉoÅ[ÉWÉáÉìÇΔÇÃå›ä∑ê´Çï€èÿÇ∑ÇÈÇΩÇflÇ…ÅADZÇÃéËñ@ÇégǧDZÇΔÇã≠Ç≠Ç®ä©ÇflǵNjÇ∑ÅB
ÇΩÇΔǶnjÅAà»â∫Ç…ÅAÉ}ÉãÉ`É\Å[ÉXÇÃÉgÉâÉìÉVÉWÉáÉìÉGÉtÉFÉNÉgÇæÇØÇï\é¶Ç∑ÇÈåƒÇ—èoǵÇÃó·Çé¶ÇµÇ‹Ç∑ÅB
QTAtomContainer effectsList;
OSErr err;
err = QTGetEffectsListExtended(
&effectsList,
2, /* É\Å[ÉXêîÇÃç≈è¨íl */
-1, /* É\Å[ÉXêîÇÃç≈ëÂílÇÕǻǵ */
0, /* getOptions - è»ó™â¬î\ */
kTransitionMajorClass, /* É}ÉãÉ`É\Å[ÉXÇÃÉÇÅ[ÉtÉGÉtÉFÉNÉgÇÉtÉBÉãÉ^Ç…Ç©ÇØÇÈ */
kTransitionMinorClass, /* ÉgÉâÉìÉVÉWÉáÉìÇÉtÉBÉãÉ^Ç…Ç©ÇØÇÈ */
0, /* ÉIÉvÉVÉáÉìÇÃÉtÉBÉãÉ^èàóù */
0); /* ÉtÉBÉãÉ^èàóùéËèáÇ…ëŒÇ∑ÇÈÉIÉvÉVÉáÉìÇà refcon */
|
ÉäÉXÉg 1Å@QTGetEffectsListExtended ÇégópǵÇΩÉGÉtÉFÉNÉgÉäÉXÉgÇÃÉtÉBÉãÉ^èàóù
|
QuickTime 5 Ç®ÇÊǗǪÇÍà»ëOÇÃÉoÅ[ÉWÉáÉìÇ≈ÇÕÅAQTGetEffectsList Ç…ÇÊǡǃñflÇ≥ÇÍÇΩÉGÉtÉFÉNÉgÇÃÉäÉXÉgÇéËìÆÇ≈ämîFǵÅAï\é¶ÇµÇΩÇ≠ǻǢÉGÉtÉFÉNÉgÇÉäÉXÉgÇ©ÇÁçÌèúÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBQTGetEffectsList Ç©ÇÁñflÇ≥ÇÍÇÈÉäÉXÉgÇ…ÇÕÅAäeÉGÉtÉFÉNÉgÉRÉìÉ|Å[ÉlÉìÉgÇ…ëŒÇµÇƒ 2 ǬÇÃÉAÉgÉÄÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅB1 ǬÇÕÅAå^Ç™ kEffectNameAtom ('name') ÇÃÉAÉgÉÄÇ≈džÇËÅAÉGÉtÉFÉNÉgÇÃñºëOÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅBLJǧ 1 ǬÇÕÅAå^Ç™ kEffectTypeAtom ('type') ÇÃÉAÉgÉÄÇ≈ÅAÉGÉtÉFÉNÉgÉRÉìÉ|Å[ÉlÉìÉgÇÃÉTÉuÉ^ÉCÉvÇ≈džÇÈÉGÉtÉFÉNÉgÇÃÉ^ÉCÉvÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅBíPèÉDžDZÇÃÉäÉXÉgÇämîFǵǃÅAï\é¶ÇµÇΩÇ≠ǻǢÉGÉtÉFÉNÉgÇ…ëŒâûÇ∑ÇÈ kEffectNameAtom Ç®ÇÊÇ— kEffectTypeAtom ÉAÉgÉÄÇçÌèúǵNjÇ∑ÅBà»â∫ÇÕÅADZÇÃï˚ñ@Çé¶ÇµÇΩÉRÅ[ÉhÇÃó·Ç≈Ç∑ÅB
void BuildAndEditEffectsList() {
short childCount, index;
OSErr err;
QTAtomContainer effectsList, effectSample;
QTParameterDialog effectsDialog;
/* DZÇÍÇÁÇ™ÉäÉXÉgÇ…ï\é¶ÇµÇΩÇ¢ÉGÉtÉFÉNÉg */
const OSType supportedEffects[] = {
kBlurImageFilterType,
kBrightnessContrastImageFilterType
};
/* ÉGÉtÉFÉNÉgÇÃåªç›ÇÃÉäÉXÉgÇéÊìæ */
/* ç≈è¨íl == ç≈ëÂíl == -1ÅAǬNjÇËç≈è¨ílLJç≈ëÂílLJǻǵ */
err = QTGetEffectsList( &effectsList, -1, -1, 0 );
if (err != noErr) goto bailError;
/* ÉäÉXÉgíÜÇÃÉGÉtÉFÉNÉgêîÇÃÉJÉEÉìÉgÇéÊìæ */
childCount = QTCountChildrenOfType(
effectsList, kParentAtomIsContainer, kEffectNameAtom );
/* îΩïúèàóùÇé¿çsǵǃÉäÉXÉgíÜÇÃäeÉGÉtÉFÉNÉgÇèàóùǵÅA
è„Ç≈džÇÁÇ©Ç∂ÇflëIëǵÇΩÉGÉtÉFÉNÉgÇΔàÍívǵǻǢLJÇÃÇçÌèú */
for( index = childCount; index > 0 ; index -- )
{
QTAtom effectTypeAtom;
QTAtomID id;
long effectCodeSize;
Ptr effectCodePtr;
OSType effectCode;
short j;
Boolean effectIsSupported;
effectTypeAtom = QTFindChildByIndex( effectsList,
kParentAtomIsContainer,
kEffectTypeAtom, index, &id );
err = QTLockContainer( effectsList );
if (err != noErr) goto bailError;
err = QTGetAtomDataPtr( effectsList,
effectTypeAtom,
&effectCodeSize,
&effectCodePtr);
if (err != noErr) goto bailError;
/* é¿ç€ÇÃÉGÉtÉFÉNÉgÉRÅ[ÉhÇéÊìæ */
effectCode = *(OSType *)effectCodePtr;
err = QTUnlockContainer( effectsList );
/* åªç›ÇÃÉGÉtÉFÉNÉgÇ™ÅAè„Ç≈ëIëǵÇΩÉäÉXÉgÇ…
džÇÈǩǫǧǩÉ`ÉFÉbÉN */
for( j=0, effectIsSupported=false ;
j<sizeof(supportedEffects)/sizeof(OSType) ; j++ )
{
if ( effectCode == supportedEffects[j] )
{
effectIsSupported = true;
break;
}
}
/* è„ãLÇÃÉJÉXÉ^ÉÄÉäÉXÉgÇ…àÍívÇ∑ÇÈLJÇÃǙǻǩǡÇΩèÍçáÇÕÅA
DZÇÃÉGÉtÉFÉNÉgÇçÌèú */
if ( !effectIsSupported )
{
QTAtom effectNameAtom;
effectNameAtom = QTFindChildByIndex( effectsList,
kParentAtomIsContainer, kEffectNameAtom, index, &id );
err = QTRemoveAtom( effectsList, effectTypeAtom );
err = QTRemoveAtom( effectsList, effectNameAtom );
}
}
/* êVǵÇ≠çÏê¨Ç≥ÇÍÇΩÉGÉtÉFÉNÉgÉäÉXÉgÇégópǵǃÅA
ǪÇÃå„Ç≈égópÇ∑ÇÈÉ_ÉCÉAÉçÉOÇçÏê¨ */
err = QTNewAtomContainer( &effectSample );
err = QTCreateStandardParameterDialog( effectsList,
effectSample, 0, &effectsDialog );
bailError:
return;
}
|
ÉäÉXÉg 2Å@QTGetEffectsList Ç…ÇÊǡǃñflÇ≥ÇÍÇΩÉGÉtÉFÉNÉgÇÃÉäÉXÉgÇÃï“èW
|
[2002îN 9 åé 4 ì˙]
|